﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;

namespace Avanservices
{
    public partial class Principal : System.Web.UI.MasterPage
    {
        Variables var;
        string old_linkUsuario = "";
        string objeto = "";
        string[] objetoTemp;

        protected void Page_Load(object sender, EventArgs e)
        {
            this.EnsureChildControls();
            var = Session["Variables"] as Variables;
            if (var == null)
            {
                Response.Redirect("login.aspx");
            }
            else
            {
                old_linkUsuario = var.linkUsuario;
                lblFecha.Text = DateTime.Now.Date.ToString("dd-MM-yyyy");
                lblBienvenida.Text = "Bienvenid@ " + var.NombreUsuario + " " + var.ApellidoUsuario;

                if (Request.Params["__EVENTTARGET"] != "ctl00$linkSalir")
                {
                    if ((Request.Params["__EVENTARGUMENT"] != "") && (Request.Params["__EVENTARGUMENT"] != null))
                    {
                        string controlactual = Request.Params["__EVENTARGUMENT"].Remove(0, 1).Replace("\\", "");
                        var.linkUsuario = controlactual;
                        var.Where = "";
                        var.Orden = "";
                        ctlBuscador.Controls.Clear();
                        Contenido.Controls.Clear();
                        Control buscadorCtl = LoadControl("buscador.ascx");
                        buscadorCtl.ID = "Buscador";
                        ctlBuscador.Controls.Add(buscadorCtl);
                        Control lp = LoadControl(var.linkUsuario);
                        lp.ID = "Control2";
                        Contenido.Controls.Add(lp);
                    }
                    else
                    {
                        if (var.linkUsuario != "")
                        {
                            if (Request.Params["__EVENTTARGET"] != "" && Request.Params["__EVENTTARGET"] != null)
                            {
                                objetoTemp = Request.Params["__EVENTTARGET"].ToString().Split('$');
                                objeto = objetoTemp[objetoTemp.Length - 1];
                            }
                            if ((Request.Params["__EVENTARGUMENT"] == "") && (objeto == "linkAceptar" || objeto == "linkCancelar") || (objeto == "lnkBuscar"))
                            {
                                Control buscadorCtl = LoadControl("buscador.ascx");
                                buscadorCtl.ID = "Buscador";
                                ctlBuscador.Controls.Add(buscadorCtl);
                            }

                            Control lp = LoadControl(var.linkUsuario);
                            lp.ID = "Control2";
                            Contenido.Controls.Add(lp);
                        }
                        else
                        {
                            Control lp = LoadControl("inicio.ascx");
                            lp.ID = "Control2";
                            Contenido.Controls.Add(lp);
                        }
                    }

                    //marcar la opcion del menu
                    if ((var.linkUsuario != "Inicio") && (var.linkUsuario != "") && (var.linkUsuario != old_linkUsuario))
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "ObtenerIdMenu", "<script language='javascript'>" +
                                    "try{" +
                                    "document.getElementById('" + var.linkUsuario + "').className = 'ListalinkHijoselec'; " +
                                    "document.getElementById('" + old_linkUsuario + "').className = 'ListalinkHijonoselec'; " +
                                    "}catch(e){}" +
                            "</script>", false);
                    }
                    else if (var.linkUsuario == "Inicio")
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "ObtenerIdMenu", "<script language='javascript'>" +
                                    "try{" +
                                    "document.getElementById('" + old_linkUsuario + "').className = 'ListalinkHijonoselec'; " +
                                    "}catch(e){}" +
                        "</script>", false);
                    }

                    //Permitir recargar el menu cuando sea carga masiva
                    if ((!IsPostBack) || ((objeto == "linkAceptar") && (var.linkUsuario.ToLower().IndexOf("cargamasiva") == 0)))
                    {
                        //cargar la permisologia de los modulos
                        DataTable DTpermisologia = new DataTable();
                        ReglasNegocio.clsPerfil _perfil = new ReglasNegocio.clsPerfil();
                        DTpermisologia = _perfil.ObtenerMenuXPerfil(Convert.ToInt32(var.PerfilUsuario)).Tables[0];
                        ArrayList menus = new ArrayList();

                        if (DTpermisologia.Rows.Count > 0)
                        {
                            for (int J = 0; J < DTpermisologia.Rows.Count; J++)
                            {
                                menus.Add(DTpermisologia.Rows[J]["Menu_Id"].ToString());
                            }
                        }

                        ReglasNegocio.clsLogin login = new ReglasNegocio.clsLogin();
                        DataTable DT = new DataTable();
                        DT = login.MenuInicial().Tables[0];
                        List<TreeView> triger_menu = new List<TreeView>();

                        for (int I = 0; I < DT.Rows.Count; I++)
                        {
                            TreeView arbol = new TreeView();
                            arbol.ID = "Arbol" + I;
                            arbol.EnableViewState = true;
                            login.CargarTreeViewDir(arbol, false, DT.Rows[I]["Id"].ToString(), menus, var.linkUsuario);
                            if (arbol.Nodes.Count > 0)
                            {
                                AjaxControlToolkit.AccordionPane item_panel = new AjaxControlToolkit.AccordionPane();
                                item_panel.EnableViewState = true;
                                item_panel.ID = "Panel" + I;
                                Label titulo = new Label();
                                titulo.Text = DT.Rows[I]["Nombre"].ToString();
                                item_panel.HeaderContainer.Controls.Add(titulo);
                                item_panel.ContentContainer.Controls.Add(arbol);
                                Accordion1.Panes.Add(item_panel);

                                ScriptManager.GetCurrent(this.Page).RegisterAsyncPostBackControl(arbol);
                                //Creates a new async trigger
                                AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();

                                //Sets the control that will trigger a post-back on the UpdatePanel
                                trigger.ControlID = item_panel.ContentContainer.FindControl(arbol.ID).UniqueID;

                                //Sets the event name of the control
                                trigger.EventName = "SelectedNodeChanged";

                                //Adds the trigger to the UpdatePanels' triggers collection                                   
                                UpdatePanel1.Triggers.Add(trigger);
                            }
                            triger_menu.Add(arbol);
                        }
                        var.TrigersMenu = triger_menu;
                    }
                    else
                    {
                        for (int j = 0; j < var.TrigersMenu.Count; j++)
                        {
                            ScriptManager.GetCurrent(this.Page).RegisterAsyncPostBackControl(var.TrigersMenu[j]);
                        }
                    }
                }

            }
        }
         
        protected void linkSalir_Click(object sender, EventArgs e)
        {
            var = Session["Variables"] as Variables;            
            Session["Variables"] = null;
            Response.Redirect("login.aspx");
        }

        protected void linkInicio_Click(object sender, EventArgs e)
        {
            var.linkUsuario = "inicio.ascx";
            Session["Variables"] = var;
            Control lp = LoadControl(var.linkUsuario);
            lp.ID = "ControlI";
            Contenido.Controls.Clear();
            Contenido.Controls.Add(lp);
            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "ObtenerIdMenu", "<script language='javascript'>" +
                        "try{" +
                        "document.getElementById('" + old_linkUsuario + "').className = 'ListalinkHijonoselec'; " +
                        "}catch(e){}" +
            "</script>", false);          
        }

    }
}
